﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Ucb.Workshop.Dal;
using Ucb.Workshop.Business;
using Ucb.Workshop.Business.Util;
using Ucb.Workshop.WinApp.View.GestionProducto;

namespace Ucb.Workshop.WinApp.View.GestionVentas
{
    public partial class SeleccionarProducto : Form
    {
        DBManager conexion;
        ControlRegistroVenta ctrlVenta;
        ProductoOpc productoOpc;
        string[] valores = new string[6];
        int opc = 0;
        public SeleccionarProducto(ControlRegistroVenta ctrlVenta)
        {
            this.ctrlVenta = ctrlVenta;
            conexion = new DBManager();
            InitializeComponent();
            btSeleccionar.Visible = false;
            btSeleccionar.Enabled = false;

        }

        public SeleccionarProducto(ProductoOpc productoOpc)
        {
            this.productoOpc = productoOpc;
            conexion = new DBManager();
            InitializeComponent();

            groupBox1.Visible = false;

        }
        public void llenarGrillaProducto(string buscarProducto)
        {

            string consulta = "SELECT pr.cod_provee, prod.descripcion, m.nombre, pr.precio_venta, pr.stock, prov.empresa FROM provee pr, proveedor prov, producto prod, marca m WHERE m.cod_marca = pr.cod_marca AND prod.cod_producto = pr.cod_producto AND pr.cod_proveedor = prov.cod_proveedor AND pr.stock > 0 AND prov.empresa LIKE '%" + buscarProducto + "%'";
            conexion.LlenarGrid(gridProductos, consulta);
            gridProductos.Columns[0].Visible = false;
            gridProductos.Columns[1].HeaderText = "Producto";
            gridProductos.Columns[2].HeaderText = "Marca";
            gridProductos.Columns[3].HeaderText = "Precio";
            gridProductos.Columns[4].HeaderText = "Stock";
            gridProductos.Columns[5].HeaderText = "Proveedor";

        }
        public string datoGrid(int fila, int columna)
        {
            return gridProductos.Rows[fila].Cells[columna].Value.ToString();
        }

        private void txtBuscarProducto_TextChanged(object sender, EventArgs e)
        {
            string consulta = "SELECT pr.cod_provee, prod.descripcion, m.nombre, pr.precio_venta, pr.stock, prov.empresa, prod.codigo FROM provee pr, proveedor prov, producto prod, marca m WHERE m.cod_marca = pr.cod_marca AND prod.cod_producto = pr.cod_producto AND pr.cod_proveedor = prov.cod_proveedor AND pr.stock > 0 AND prod.descripcion LIKE '%" + txtBuscarProducto.Text.Trim() + "%'";
            conexion.LlenarGrid(gridProductos, consulta);
            gridProductos.Columns[0].Visible = false;
            gridProductos.Columns[1].HeaderText = "Producto";
            gridProductos.Columns[2].HeaderText = "Marca";
            gridProductos.Columns[3].HeaderText = "Precio";
            gridProductos.Columns[4].HeaderText = "Stock";
            gridProductos.Columns[5].HeaderText = "Proveedor";
            gridProductos.Columns[6].HeaderText = "Codigo Producto";
        }

        private void txtCodigo_TextChanged(object sender, EventArgs e)
        {
            string consulta = "SELECT pr.cod_provee, prod.descripcion, m.nombre, pr.precio_venta, pr.stock, prov.empresa, prod.codigo FROM provee pr, proveedor prov, producto prod, marca m WHERE m.cod_marca = pr.cod_marca AND prod.cod_producto = pr.cod_producto AND pr.cod_proveedor = prov.cod_proveedor AND pr.stock > 0 AND  prod.codigo LIKE '%" + txtCodigo.Text.Trim() + "%'";
            conexion.LlenarGrid(gridProductos, consulta);
            gridProductos.Columns[0].Visible = false;
            gridProductos.Columns[1].HeaderText = "Producto";
            gridProductos.Columns[2].HeaderText = "Marca";
            gridProductos.Columns[3].HeaderText = "Precio";
            gridProductos.Columns[4].HeaderText = "Stock";
            gridProductos.Columns[5].HeaderText = "Proveedor";
            gridProductos.Columns[6].HeaderText = "Codigo Producto";
        }

        private void gridProductos_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            int fila = e.RowIndex;
            int columna = e.ColumnIndex;
            int numerofilas = gridProductos.Rows.Count;

            if (numerofilas > 0 && fila > -1)
            {
                // Capturamos los datos 
                valores[0] = datoGrid(fila, 0);
                valores[1] = datoGrid(fila, 1);
                valores[2] = datoGrid(fila, 2);
                valores[3] = datoGrid(fila, 3);
                valores[4] = datoGrid(fila, 5);

                valores[5] = datoGrid(fila, 4);
                txtPrecio.Text = valores[3];
                txtProducto.Text = valores[1];
                txtStockActual.Text = datoGrid(fila, 4);
                


            }
            MessageBox.Show("el valor de producto",valores[1]);
        }

        private void txtCantidad_TextChanged(object sender, EventArgs e)
        {
            UtilControl.EsEntero(txtCantidad);
        }

        private void btSeleccionar_Click(object sender, EventArgs e)
        {
            int cod_provee = int.Parse(valores[0]);
            productoOpc.Cod_provee = cod_provee;
            this.Dispose();
            this.Visible = false;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string consulta = "SELECT pr.cod_provee, prod.descripcion, m.nombre, pr.precio_venta, pr.stock, prov.empresa , prod.codigo FROM provee pr, proveedor prov, producto prod, marca m WHERE m.cod_marca = pr.cod_marca AND prod.cod_producto = pr.cod_producto AND pr.cod_proveedor = prov.cod_proveedor AND pr.stock > 0 AND prov.empresa LIKE '%" + "" + "%'";
            //string consulta = "SELECT p.cod_producto, p.codigo, p.descripcion, p.unidad, p.categoria FROM producto as p WHERE p.descripcion LIKE '%" + "" + "%'";
            conexion.LlenarGrid(gridProductos, consulta);
            gridProductos.Columns[0].Visible = false;
            gridProductos.Columns[1].HeaderText = "Producto";
            gridProductos.Columns[2].HeaderText = "Marca";
            gridProductos.Columns[3].HeaderText = "Precio";
            gridProductos.Columns[4].HeaderText = "Stock";
            gridProductos.Columns[5].HeaderText = "Proveedor";
            gridProductos.Columns[6].HeaderText = "Codigo Producto";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (opc == 0)
            {
                if (UtilControl.ValidarTextBox(txtCantidad))
                {


                    if (int.Parse(valores[5]) >= int.Parse(txtCantidad.Text.Trim()))
                    {
                        valores[5] = txtCantidad.Text.Trim();
                        ctrlVenta.Valores = valores;
                        ctrlVenta.addProducto();
                        this.Dispose();
                        this.Visible = false;
                    }
                    else
                    {
                        MessageBox.Show("la cantidad debe ser menor o igual a " + int.Parse(txtStockActual.Text.Trim()));
                    }
                }
                else
                {
                    MessageBox.Show("Debe ingresar una cantidad");
                }
            }
            else
            {

            }
        }

      
    }
}
